//
//  CZHomeTableViewController.swift
//  微博
//
//  Created by 霸气的刘吉庆 on 16/4/16.
//  Copyright © 2016年 ios. All rights reserved.
//

import UIKit

class CZHomeTableViewController: CZVisitorViewController {
    
    
    //设置重用标识符
    
    let identifier = "homecell"
    
    
    
    //创建一个数组,提供布局的
    
//    var statusArray: [CZStutsModel]?
    
    
    
    private lazy var homeListModel: CZHomeListModel = CZHomeListModel()
    
    

    override func viewDidLoad() {
        super.viewDidLoad()
        
        //进行判断,看登录界面是显示的哪一个
        
        
        //如果没有登录,才进行判断
        
        //默认是没有登录的,没有登录才进行设置
        
        if !userLogon{
            
        i.setuserInfo(nil, text: nil)
            
            return
            
        }
        
        
        setupUI()
        
        
        loadData()
        
        
    }
    
    
    private func setupUI(){
        
        //设置界面
        
        
        //注册cell和rowHeight
        tableView.registerClass(CZHomeCell.self, forCellReuseIdentifier: identifier)
        
        
        //设置rowHight
        
        tableView.rowHeight = UITableViewAutomaticDimension
        
        tableView.estimatedRowHeight = 200
        
//        tableView.rowHeight = 200
        //隐藏tableView的分割线
        tableView.separatorStyle = .None
        
        
        tableView.backgroundColor = UIColor(white: 180/255, alpha: 1)
        
        //设置tableView的footerView
        tableView.tableFooterView = refreshView
        //创建我们自定义的刷新的空间
//        self.refreshControl = UIRefreshControl()
        
        //给该控件添加对应的监听的事件
        
//        self.refreshControl?.addTarget(self, action: "loadData", forControlEvents: .ValueChanged)
        //添加view
        tableView.addSubview(top_refreshControl)
        
        top_refreshControl.addTarget(self, action: "loadData", forControlEvents: .ValueChanged)
        
        
        
    }
    
    
    
    
    @objc private func loadData(){
        
        //如果是系统的refresh控件监听这个方法,refreshView的动画效果为no
        homeListModel.loadData(refreshView.isAnimating()) { (isSuccess) -> () in
            //进行判断
            if isSuccess {
                
                self.tableView.reloadData()
                
            }else{
                
                print("请求数据失败")
            }
            
            self.endRedfresh()
            
        }
        
        
        
        
        
        
        
    }
    
    
    
    //定义一个方法,菊花停止转动
    private func endRedfresh(){
        
        refreshView.stopAnimating()
        //让这个的系统的refresh停止转动
//        self.refreshControl?.endRefreshing()
        top_refreshControl.endRefresh()
    }
    //懒加载控件,一个refreshControl,注意:只有继承自UIcontrol采能addTarget等
    
    //懒加载控件最上面的orange刷新view
    private lazy var top_refreshControl: CZRefreshControl = CZRefreshControl()
    
    private lazy var refreshView: UIActivityIndicatorView = {
        let indicatorView = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.WhiteLarge)
        
        indicatorView.color = UIColor.orangeColor()
        
        //为了测试
        //不需要的时候将其注释掉
        indicatorView.hidesWhenStopped = false
        
        
        
        return indicatorView
    }()


    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
       
    }


}


extension CZHomeTableViewController {
    
    //监听方法,有一个是监听cell移动到那个位置了
    
    override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell, forRowAtIndexPath indexPath: NSIndexPath) {
        
        //判断是否将要加载到最后一个
        
        if indexPath.row == self.homeListModel.statusArray!.count - 1 && !refreshView.isAnimating() {
            
            print("即将加载到最后一个cell")
            //1.菊花转动
            refreshView.startAnimating()
            //2.加载数据
            loadData()
            
            
            
            
        }
        
        
        
    }
    
    
    
    
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        
        
        
//        return self.statusArray?.count ?? 0
        
        
//        print(self.homeListModel.statusArray?.count)
        
//        return self.homeListModel.statusArray?.count ?? 0
        
        return self.homeListModel.statusArray?.count ?? 0
        
        
    }
    
    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        
        
        let cell = tableView.dequeueReusableCellWithIdentifier(identifier, forIndexPath: indexPath) as! CZHomeCell
        //取出对应的model
        
        cell.statusViewModel = self.homeListModel.statusArray![indexPath.row]
        
        
//        cell.textLabel?.text = homeListModel.statusArray![indexPath.row].text
        
        
        return cell
        
        
    }
    
    
    
    
    
    
    
    
    
    
}
